package pprof

import (
	"net/http"
	"net/http/pprof"

	"github.com/gorilla/mux"
)

const (
	// DefaultPrefix url prefix of pprof
	DefaultPrefix = "/debug/pprof"
)

func NewHandler(prefix string) http.Handler {
	if prefix == "" {
		prefix = DefaultPrefix
	}
	r := mux.NewRouter()
	g := r.PathPrefix(prefix).Subrouter()
	g.HandleFunc("/", pprof.Index).Methods("GET")
	g.HandleFunc("/cmdline", pprof.Cmdline).Methods("GET")
	g.HandleFunc("/profile", pprof.Profile).Methods("GET")
	g.HandleFunc("/symbol", pprof.Symbol).Methods("GET", "POST")
	g.HandleFunc("/trace", pprof.Trace).Methods("GET")
	g.HandleFunc("/allocs", pprof.Handler("allocs").ServeHTTP).Methods("GET")
	g.HandleFunc("/block", pprof.Handler("block").ServeHTTP).Methods("GET")
	g.HandleFunc("/goroutine", pprof.Handler("goroutine").ServeHTTP).Methods("GET")
	g.HandleFunc("/heap", pprof.Handler("heap").ServeHTTP).Methods("GET")
	g.HandleFunc("/mutex", pprof.Handler("mutex").ServeHTTP).Methods("GET")
	g.HandleFunc("/threadcreate", pprof.Handler("threadcreate").ServeHTTP).Methods("GET")
	return r
}
